#!/usr/bin/env python3
# query_table.py
# usage:
# python ./src/query/query_table.py --query 请问2024年公卫医疗专题各市直部门办结率分别是多少？


import os,sys
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.insert(0, project_root)
import json
import argparse
from typing import List, Dict
from tools.clean_question import clean_question


# 全局缓存
json_question2sql = []

def load_question2sql(file_path: str = "tmp_question2sql.json") -> List[Dict]:
    """加载 JSON Lines 格式的配置文件"""
    global json_question2sql
    if not os.path.exists(file_path):
        raise FileNotFoundError(f"文件 {file_path} 不存在。")

    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
        json_question2sql = [json.loads(line.strip()) for line in lines if line.strip()]
    return json_question2sql


def query_table(query: str) -> str:
    """
    将输入问题清洗后，与标准问题精确匹配，返回对应的表名。

    :param query: 输入的问题字符串
    :return: 匹配到的表名，未匹配返回 "NOTFOUND"
    """
    global json_question2sql

    if not json_question2sql:
        try:
            json_question2sql = load_question2sql()
        except Exception as e:
            print(f"加载失败: {e}")
            return None

    # 清洗输入问题
    cleaned_query = clean_question(query)

    for item in json_question2sql:
        questions = item.get("questions", [])
        table_list = item.get("table", [])

        if not questions or not table_list:
            continue

        # 精确匹配：清洗后的问题是否在标准问题列表中
        if cleaned_query in questions:
            return table_list[0]

    return None


def main():
    parser = argparse.ArgumentParser(description="清洗问题后精确匹配表名")
    parser.add_argument('--query', type=str, required=True, help='输入的问题')

    args = parser.parse_args()
    print(query_table(args.query))


if __name__ == '__main__':
    main()